package homework.day05;

import java.io.*;

/**
 * 完成一个转码工具。
 * 比如当前项目目录下有一个文本文件note.txt，字符串编码是GBK的，
 * 现在需要将这个文件内容转换为UTF-8编码，并将其写出到文件note_utf.txt中。
 * 思路:用GBK编码将note.txt文件内容读取出来，再以UTF-8编码写入到note_utf.txt中
 * 要点:组建流连接时，输入流中的转换流指定为GBK编码,最终用缓冲输入流按行读取字符串。
 * 组件输出流中的转换流时指定为UTF-8编码，最终按行写出时就可以了。
 * 最终程序可以扩展为，读取的文件名可以让用户在控制台输入，
 * 该文件的字符集也可以指定。然后想转换为什么字符集也可以指定，并最终写入一个新文件。
 * 这样就可以随意使用了。
 * @author XingHaiYang
 * @date 2022/9/13 8:13
 */
public class Test02 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("note.txt");//文件输入流
        InputStreamReader isr = new InputStreamReader(fis,"GBK");//转换流
        BufferedReader br = new BufferedReader(isr);//缓冲字符流
        FileOutputStream fos = new FileOutputStream("note_utf.txt");//文件输出流
        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");//转换流
        BufferedWriter bw = new BufferedWriter(osw);//缓冲输出流
        PrintWriter pw = new PrintWriter(bw);//写出流
        String line;
        while((line = br.readLine())!=null){//读
            pw.println(line);//写
        }
        System.out.println("转码完毕!");
        br.close();
        pw.close();
    }
}
